package com.example.utils.common;

import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * 文件名：LocalFileUploadUtils
 * 创作者：ss
 * 创建时间：2022/7/3 20:25
 * 描述：
 */
public class LocalFileUploadUtils {

    public void upload(@RequestParam("file") MultipartFile file) throws Exception {
        if (file.isEmpty()) {
            throw new Exception("上传文件不能为空");
        }
//        FileEntity fileEntity = new FileEntity();
        // 这个map用于返回imageUrl，imageId之类的数据
        Map<String,Object> map = new HashMap<>();
        try {
            // 1）设置文件的目录
            //按照月份进行分类：
            Calendar calendar = Calendar.getInstance();
            calendar.get(Calendar.YEAR);
            String yearMonth = calendar.get(Calendar.YEAR) + "年" +(calendar.get(Calendar.MONTH) + 1)+"月";
            String filePath = "E:\\图片保存\\upload\\"+ yearMonth ; //项目路径+年月份

            // 创建文件目录
            File realPath = new File(filePath);  //上传文件保存地址：realPath = "E:\\图片保存\\upload\\2022年5月"
            if (!realPath.exists()){
                boolean mkdirs = realPath.mkdirs();//创建文件目录，可以创建多层目录
            }

            //2）设置文件名字
            String fileRealName=file.getOriginalFilename();
            String suffix = fileRealName.substring(fileRealName.lastIndexOf(".") + 1);  //后缀  jpg  png
            //解决文件名字问题：使用uuid的方式;
            String fileName = "file-"+ UUID.randomUUID().toString().replaceAll("-", "") + "." + suffix;

            //3）进行文件保存，通过CommonsMultipartFile的方法直接写文件
            file.transferTo(new File(realPath +"/"+ fileName));

            //4）返回图片的名字，url，如果只是保存文件，下面的语句可以不写
            String fileUrl = "/upload/" + yearMonth + "/" +fileName;
            //前端的FILE_API为http://localhost:9222/file
            map.put("fileName",fileName);
            map.put("fileUrl",fileUrl);  //传到前端的url，例如： /upload/2022年5月/xxx.jpg

        } catch (IOException e) {
            e.printStackTrace();
        }
//        String fileOriginalName = file.getOriginalFilename();
//        String fileName = (String) map.get("fileName");
//        String fileUrl = (String) map.get("fileUrl");
//        Long fileSize = file.getSize();

//        fileEntity.setFileOriginalName(fileOriginalName);
//        fileEntity.setFileName(fileName);
//        fileEntity.setFileUrl(fileUrl);
//        fileEntity.setFileSize(fileSize);

//        baseMapper.insert(fileEntity);
//        map.put("fileId",fileEntity.getId());

//        return Result.ok().data(map);
        //上传文件
//        String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
//        String url = OSSFactory.build().uploadSuffix(file.getBytes(), suffix);

        //保存文件信息
//        SysOssEntity ossEntity = new SysOssEntity();
//        ossEntity.setUrl(url);
//        ossEntity.setCreateDate(new Date());
//        sysOssService.save(ossEntity);

//        return R.ok().put("url", url);
    }
}
